from celery import Celery
import time

# 配置 Celery 应用，使用 Redis 作为消息队列
redis_ip = '192.168.100.103'
app = Celery('demo', broker=f'redis://{redis_ip}:6379/0', backend=f'redis://{redis_ip}:6379/0')

# 配置 Celery
app.conf.update(
    task_serializer='json',
    accept_content=['json'],
    result_serializer='json',
    timezone='Asia/Shanghai',
    enable_utc=True,
)
#app.config_from_object一定要放在app.conf.update后面
#主要的架构是 app.py celeryconfig.py这两个文件
#
app.config_from_object('celeryconfig')
# 定义一个异步任务
@app.task
def add(x, y):
    """异步计算两个数的和"""
    time.sleep(2)  # 模拟耗时操作
    return f'{x + y} hello world'


num = 1

@app.task
def timed_task():
    print("⏰ 这是一个每分钟自动运行的定时任务")
    global num
    num += 1
    if num == 100:
        print("stop xx")
    return f"ok {num}"
# 示例：如何调用任务cd
# if __name__ == '__main__':
#     # 异步调用任务
#     result = add.delay(5, 3)
#     print(f"Task ID: {result.id}")
#     # 等待任务结果
#     print(f"Waiting for result...")
#     print(f"Result: {result.get(timeout=10)}")

